package com.openatc.agent.service.area;

import com.google.gson.JsonObject;
import com.openatc.agent.model.area.Area;
import com.openatc.core.model.RESTRetBase;

import java.util.List;

/**
 * @Classname AreaService
 * @Description
 * @Date 2022/9/5 11:13
 * @Created by panleilei
 */
public interface AreaService {
    /**
     * 新增区域
     * @param areaEntity
     * @return
     */
    RESTRetBase addArea(Area areaEntity);

    /**
     * 区域重命名
     * @param areaEntity
     * @return
     */
    RESTRetBase renameArea(Area areaEntity);

    /**
     * 更新区域信息
     * @param areaEntity
     * @return
     */
    RESTRetBase updateAreaInfo(Area areaEntity);

    /**
     * 更新区域中独立路口
     * @param id
     * @param agentids
     * @return
     */
    RESTRetBase updateAreaIsolate(Long id, List<String> agentids);

    /**
     * 删除单个区域
     * @param id
     * @return
     */
    RESTRetBase deleteArea(Long id);

    /**
     * 更新区域中的路线id
     * @param id
     * @param routeIds
     * @return
     */
    RESTRetBase updateAreaRouteIDs(Long id, List<String> routeIds);

    /**
     * 获取所有协调区域信息
     * @return
     */
    RESTRetBase getAllArea();

    /**
     * 根据协调区域id获取单个区域的信息
     * @param id
     * @return
     */
    RESTRetBase getAreaInfoById(Long id);

    /**
     * 获取所有协调区域的简易信息
     * @return
     */
    RESTRetBase getAreaSimpleInfo();

    /**
     * 保存区域整体方案
     * @param jsonObject
     * @return
     */
    RESTRetBase saveAreaPattern(JsonObject jsonObject);

    /**
     * 获取区域整体方案
     * @param id
     * @param feature1
     * @return
     */
    RESTRetBase getAreaPattern(Long id, String feature1);
    /**
     * 获取单个区域信息
     * @param areaId
     * @return return Null if area is not exist
     */
//    Area findAreaById(Long areaId);
}
